<?php
/**
* 名称：帐户登录控制器。
* 描述：响应登录过程的相关程式。
*/
final class Controller_Login extends Controller_Public_Preload{
    /**
    * 描述：页面入口程式。
    * @access protected
    * @return void
    */
    protected function Main(){
        if(Model_Account::IsLogin()===TRUE){
            header('location:'.Route::MakeHyperlink(':help'));
        }
        else{
            self::$Template->Display('oui/login.html');
        }
    }

    /**
    * 描述：登录程式之流程。
    * @access protected
    * @return void
    */
    protected function Logging(){
        //获取表单信息。
        $username=post('username');
        $password=Model_Account::Hash(post('password'));
        $captcha=post('captcha');
        $remember=post('remember');
        //验证码验证。
        if(strtolower($captcha)!==Captcha2::GetSessionValue()){
            self::$Template->Assign('alertMessage','验证码错误');
        }
        else{
            if(Model_Account::IsRightUser($username,$password)){
                $this->Logging_Signin($username,$password,$remember);
            }
            else{
                self::$Template->Assign('alertMessage','用户名或密码错误。');
            }
        }
        self::$Template->Display('oui/login.html');
    }

    /**
    * 描述：登录程式之开始登录。
    * @access private
    * @param  string  $username 必选 用户名。
    * @param  string  $password 必选 密码。
    * @param  string  $system   必选 系统标识。
    * @param  string  $remember 必选 记住密码。
    * @return mix
    */
    private function Logging_Signin($username,$password,$remember){
        $loginSuccess=Model_Account::Login($username,$password,$remember);
        if($loginSuccess){
            Captcha::DeleteSession(); //释放验证码session。
            header('location:'.Route::MakeHyperlink(':help'));
            return;
        }
        else{
            self::$Template->Assign('alertMessage','登录失败。');
        }
    }

    /**
    * 描述：登出注销。
    * @access protected
    * @return void
    */
    protected function Logoff(){
        Model_Account::Logout();
        header('location:'.Route::MakeHyperlink(':login'));
    }

    /**
    * 描述：登录验证码。
    * @access protected
    * @return void
    */
    protected function Captcha(){
        $captcha=new Captcha2();
        $captcha->Doimg();
        $captcha->SetSession();
    }
}